package io;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class ByteStreamDemo {
    public static void main(String[] args) {
        // 源文件和目标文件路径
        String sourceFile = "source.jpg";
        String targetFile = "copy.jpg";

        // 声明流对象（在try外部声明，以便在finally中关闭）
        FileInputStream fis = null;
        FileOutputStream fos = null;

        try {
            // 创建字节流对象
            fis = new FileInputStream(sourceFile);
            fos = new FileOutputStream(targetFile);

            // 缓冲区（一次读取1024字节，提高效率）
            byte[] buffer = new byte[1024];
            int bytesRead; // 实际读取的字节数

            // 读取数据并写入目标文件
            System.out.println("开始复制文件...");
            while ((bytesRead = fis.read(buffer)) != -1) {
                // 写入实际读取的字节数（避免最后一次读取的空字节）
                fos.write(buffer, 0, bytesRead);
            }
            System.out.println("文件复制完成！");

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 关闭流（必须在finally中执行，确保资源释放）
            try {
                if (fis != null) fis.close();
                if (fos != null) fos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
